/***********************************************************************
 * Module:  Voiture.java
 * Author:  29004847
 * Purpose: Defines the Class Voiture
 ***********************************************************************/

package chrono_model;

import java.util.*;

/** Une voiture participe à une course à la fois, et contient une liste de pilotes */
public class Voiture {
	private String numeroVoiture_;
	private String couleur_;
	private String lienSurImage_;
	private int nombreDeTours_;
	private float tempsEstimeTour_;
	private boolean voitureActive_;
	private float quantiteMoyenneEssenceParTour_;
	private int nombreToursEffectues_;
	private int nombreToursDepuisDernierRelais_;
	private int numeroRelaisEnCours_;
	private java.util.Date heurePrevueProchainPassage_;

	private Pilote piloteActuel_;


	private HashMap<Pilote, List<Top>> collectionPilotes_Tops = new HashMap<Pilote, List<Top>>();
	Iterator it = (Iterator)this.collectionPilotes_Tops.keySet().iterator();



	/**
	 * Ajouter un pilote
	 * @param newPilote
	 */

	public void addCollectionPilotes_Tops(Pilote newPilote) {
		if (newPilote == null){
			System.out.println("Pas de pilote");
		}

		if (collectionPilotes_Tops.get(newPilote) == null){
			collectionPilotes_Tops = new HashMap<Pilote, List<Top>>();
	
			if (!collectionPilotes_Tops.containsKey(newPilote))

				collectionPilotes_Tops.put(newPilote,null);
			   

			for (Iterator<Pilote> i = collectionPilotes_Tops.keySet().iterator() ; i.hasNext() ; ){

				System.out.println("2" +i.next().getNomPilote_() );


			}

		}
		
	}

	

	/**
	 * supprimer un pilote
	 * @param oldPilote
	 */
	public void removeCollectionPilotes_(Pilote oldPilote) {
		if (oldPilote == null)
			return;
		if (this.collectionPilotes_Tops != null)
			if (this.collectionPilotes_Tops.containsKey(oldPilote))
				this.collectionPilotes_Tops.remove(oldPilote);
	}


	/**
	 * Vider la liste des pilotes
	 */
	public void removeAllCollectionPilotes_() {
		if (collectionPilotes_Tops != null)
			collectionPilotes_Tops.clear();
	}


	/** @pdGenerated default add
	 * @param newTop */
	public void addCollectionPilotes_Tops_(Top newTop, Pilote piloteactuel) {
		if (newTop == null){
			System.out.println("Pas de top");
		}
		
		if(!this.collectionPilotes_Tops.get(piloteactuel).isEmpty()){
			
			if (!this.collectionPilotes_Tops.get(piloteactuel).contains(newTop)){
				
				this.collectionPilotes_Tops.get(piloteactuel).add(newTop);
			}
		}
//		else{
//			this.collectionPilotes_Tops.get(piloteactuel).add(newTop);
//		}

	}


	/** @pdGenerated default remove
	 * @param oldTop */
	public void removeCollectionTops_(Top oldTop, Pilote piloteActuel) {
		if (oldTop == null)
			return;
		if (!this.collectionPilotes_Tops.get(piloteActuel).isEmpty() )
			if (this.collectionPilotes_Tops.get(piloteActuel).contains(oldTop))
				this.collectionPilotes_Tops.get(piloteActuel).remove(oldTop);
	}

	/** @pdGenerated default removeAll */
	public void removeAllCollectionTops_(Pilote piloteActuel) {
		if (!collectionPilotes_Tops.get(piloteActuel).isEmpty())
			collectionPilotes_Tops.get(piloteActuel).clear();
	}



	public void modifierPilote(Pilote piloteUpdate) {
		
		if(!collectionPilotes_Tops.isEmpty()){
                
			for (Iterator<Pilote> i = collectionPilotes_Tops.keySet().iterator() ; i.hasNext() ; ){
				System.out.println("3"+ i.next().getNomPilote_()); 

				Pilote pil = i.next();

				if(collectionPilotes_Tops.containsKey(pil)) {
					
				//	System.out.println("balbla" + pil.getNomPilote_());
					List<Top>  value = collectionPilotes_Tops.get(pil);
					collectionPilotes_Tops.put(piloteUpdate, value);
				};
			}
		}
	}
	//A revoir
	public void validerVoiture() {

	}


	public void modifierTop(Pilote pilote, Top top) {
		if(collectionPilotes_Tops.get(pilote).contains(top)){
			//Top texte =  top.getEtatTop_();
			collectionPilotes_Tops.get(pilote).set(nombreDeTours_, null);


		}
	}

	public int getNombreDeTours_() {
		return nombreDeTours_;
	}


	public void setNombreDeTours_(int nombreDeTours_) {
		this.nombreDeTours_ = nombreDeTours_;
	}


	public float getTempsEstimeTour_() {
		return tempsEstimeTour_;
	}


	public void setTempsEstimeTour_(float tempsEstimeTour_) {
		this.tempsEstimeTour_ = tempsEstimeTour_;
	}


	public boolean isVoitureActive_() {
		return voitureActive_;
	}


	public void setVoitureActive_(boolean voitureActive_) {
		this.voitureActive_ = voitureActive_;
	}


	public float getQuantiteMoyenneEssenceParTour_() {
		return quantiteMoyenneEssenceParTour_;
	}


	public void setQuantiteMoyenneEssenceParTour_(
			float quantiteMoyenneEssenceParTour_) {
		this.quantiteMoyenneEssenceParTour_ = quantiteMoyenneEssenceParTour_;
	}


	public int getNombreToursEffectues_() {
		return nombreToursEffectues_;
	}


	public void setNombreToursEffectues_(int nombreToursEffectues_) {
		this.nombreToursEffectues_ = nombreToursEffectues_;
	}


	public int getNombreToursDepuisDernierRelais_() {
		return nombreToursDepuisDernierRelais_;
	}


	public void setNombreToursDepuisDernierRelais_(
			int nombreToursDepuisDernierRelais_) {
		this.nombreToursDepuisDernierRelais_ = nombreToursDepuisDernierRelais_;
	}


	public int getNumeroRelaisEnCours_() {
		return numeroRelaisEnCours_;
	}


	public void setNumeroRelaisEnCours_(int numeroRelaisEnCours_) {
		this.numeroRelaisEnCours_ = numeroRelaisEnCours_;
	}


	public java.util.Date getHeurePrevueProchainPassage_() {
		return heurePrevueProchainPassage_;
	}


	public void setHeurePrevueProchainPassage_(
			java.util.Date heurePrevueProchainPassage_) {
		this.heurePrevueProchainPassage_ = heurePrevueProchainPassage_;
	}


	public Pilote getPiloteActuel_() {
		return piloteActuel_;
	}


	public void setPiloteActuel_(Pilote piloteActuel_) {
		this.piloteActuel_ = piloteActuel_;
	}


	public HashMap<Pilote, List<Top>> getCollectionPilotes_Tops() {
		return collectionPilotes_Tops;
	}






	public String getNumeroVoiture_() {
		return numeroVoiture_;
	}

	public void setCollectionPilotes_Tops(
			HashMap<Pilote, List<Top>> collectionPilotes_Tops) {
		this.collectionPilotes_Tops = collectionPilotes_Tops;
	}


	public void setNumeroVoiture_(String numeroVoiture_) {
		this.numeroVoiture_ = numeroVoiture_;
	}

	public String getCouleur_() {
		return couleur_;
	}

	public void setCouleur_(String couleur_) {
		this.couleur_ = couleur_;
	}

}